#ifndef	_INPUT_SEQUENCE_H_
#define _INPUT_SEQUENCE_H_

#include "common.h"
#include "tbb/scalable_allocator.h"
#include <fstream>
#include <vector>
#include <string>
#include "types.h"

using namespace std;

/* Each Input-Sequence will be an array of pairs-of-bits
	(each pair represents one of the 'A', 'C', 'G', 'T' characters).
*/
class InputSequence
{
  private:
	typedef ulong Block;

	size_t length;
	vector< Block, std::allocator<Block> > pairs;
	string seqName;

	// The block size in bits
	static const uint CHARS_PER_BLOCK;
  public:
	InputSequence();

	~InputSequence();

	void append(const char *arr, const uint arrLen);

	void setName(string& name);

	string getName() const;
	
	size_t getLength() const;

	char getChar(const size_t index) const;
	
	short getCharAsShort(const size_t index) const;

#ifdef DEBUG
	void print() const;
#endif


};



#endif /* _INPUT_SEQUENCE_H_ */

